package com.mswyt.utils.msHandlebean.annotation;

import org.springframework.stereotype.Component;

import java.lang.annotation.*;

/**
 * 主要解决A表关联B表、B关联C，C关联D，以往查询A表信息带出B、C、D表数据，是A left join B  XX left join C  XX lfet join D......
 * User.class.getAnnotationsByType(MsJoinTable.class);
 *
 * @author: mashuai
 * @ClassName: MsJoinTable
 */
@Component
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(MsJoinMoreTables.class)
public @interface MsJoinTable {
    //关联的表名
    String joinTable();

    //关联表的字段，默认关联表字段是id
    //可在yml文件配置：ms.hb.tb-join-field:id
    String joinField() default "id";

    //多个left join关联时候，只有@MsJoinMoreTables注解中使用生效
    String moreJoinCondition() default "";

    //需要取值的字段 格式：[数据库字段]@[赋值给对应实体类的字段]。
    //如果填写{"name@roomName","room_id"}这种格式，会默认把字段转换成驼峰{"name@roomName","room_id@roomId"}进行映射
    String[] needFields() default {};

    //过滤条件,@MsJoinMoreTables注解中使用不生效
    String condition() default "";

}
